// 定义项目打包时排除的文件或目录
fis.set('project.ignore', [
    'output/**',
    'deploy/**',
    'dist/**',
    'assets/**',
    'map.json',
    'package.json',
    'fis-conf.js',
    '.git/**',
    '.svn/**',
    'node_modules/**'
]);



// 开启模块化开发
fis.hook('commonjs',{
    extList: [
        '.js', '.coffee', '.es6', '.jsx', '.vue',
    ],
    paths:{
        vue: '/node_modules/vue/dist/vue.min.js',
        'vue-router': '/node_modules/vue-router/dist/vue-router.min.js'
    }

}); // 采用 commonjs 模块化方案。


// 启用 es6-babel 插件，解析 .es6 后缀为 .js
fis.match('/modules/**.{es6,es,js}', {
    rExt: '.js',
    //parser: fis.plugin('babel')
    // https://github.com/fex-team/fis-parser-babel-6.x
    parser: fis.plugin('babel-6.x', {
        // 插件配置文档可以参考 https://babeljs.io/docs/usage/api/#options
        sourceMap: true // 产出源码表，方便调试。
    })
    // parser: fis.plugin('babel-5.x', {
    // sourceMap: true // 产出源码表，方便调试。
    // })
});


// 设置成是模块化 js, 编译后会被 define 包裹。
fis.match('/{node_modules,modules}/**.{es6,es,js}', {
    isMod: true,
    useSameNameRequire: true
});

/**
 * vue模块解析
 */

// cnpm install --save-dev fis3-parser-vueify
fis.match('/modules/**.vue', {
    isMod: true,
    rExt: 'js',
    useSameNameRequire: true
    ,parser: fis.plugin('vueify', {
        //extractCss: false //默认是将css抽取出来的,
    })
});

fis.match('/modules/**.vue:js', {
    parser: [
        fis.plugin('babel-6.x', {
            //presets: ["es2015", "stage-0"]
            // presets: ['es2015-loose',  'stage-3']
            // ,plugins: ["transform-vue-jsx"]
        })
        // ,fis.plugin('translate-es3ify', null, 'append')
    ]
});

fis.match('/modules/{**.vue:less,**.less}', {
    rExt: 'css',
    parser: [fis.plugin('less-2.x')]
    // ,postprocessor: fis.plugin('autoprefixer')
});


// https://github.com/ccqgithub/fis3-parser-vue-component
// cnpm i --save-dev fis3-parser-vue-component
// cnpm i --save-dev fis-parser-babel-6.x
// fis.match('/modules/**.vue', {
//     parser: [
//         fis.plugin('vue-component')
//         ,fis.plugin('babel-6.x', {},{
//             // http://www.cnblogs.com/chris-oil/p/5717544.html
//             presets: ["es2015", "stage-0"]
//         })
//     ],
//     id: '$1',
//     rExt: '.js',
//     isJsLike: true,
//     isMod: true,
//     useSameNameRequire: true
// });

// fis.match('/modules/components/**.vue:js', {
//     parser: [
//         fis.plugin('babel-6.x', {},{
//             presets: ["es2015", "stage-0"]
//             //presets: ['es2015-without-strict', 'react', 'stage-3'],
//         })
//         // ,fis.plugin('translate-es3ify', null, 'append')
//     ]
// });

// vue组件中的less片段处理
// https://github.com/ccqgithub/fis3-parser-vue-component/blob/master/test/fis-conf.js
// fis.match('/modules/{**.vue:less,**.less}', {
//     rExt: 'css',
//     parser: [fis.plugin('less-2.x')]
// });


// 模块化加载器配置
// 因为是纯前段项目，依赖不能自断被加载进来，所以这里需要借助一个 loader 来完成，
// 注意：与后端结合的项目不需要此插件!!!
// https://github.com/fex-team/fis3-postpackager-loader
// npm install -g fis3-postpackager-loader
fis.match('::package', {
    // npm install [-g] fis3-postpackager-loader
    // 分析 __RESOURCE_MAP__ 结构，来解决资源加载问题
    postpackager: fis.plugin('loader', {
        resourceType: 'commonJs',
        //sourceMap:true, //是否生成依赖map文件
        useInlineMap: false //是否将sourcemap作为内嵌脚本输出
    })
});



// 禁用components
fis.unhook('components');
// fis3 对npm的node_modules模块的支持
// https://github.com/fex-team/fis3-hook-node_modules/
// npm install -g fis3-hook-node_modules
fis.hook('node_modules', {
    mergeLevel: 3,
    shimBuffer: false
});
